<?php

class Application_Model_ProyectosDCEconomico extends Sgit_Model
{
    protected $_name = 'gestion_proyectos_economico';
    protected $_primary = 'id';


     function getImporteProyectosByStatus()
     {

	    $select = $this->getAdapter()->select();
        $select->from( array( $this->_name ), array('id_proyecto','fecha_contabilizado', 'comprometido', 'importe' =>'sum(importe)' ) );
        $select->group(array('id_proyecto','comprometido','fecha_contabilizado'));
        $options = $this->getAdapter()->fetchAll( $select );
        
        $options=Sgit_Util_Array::assocBy($options,'id_proyecto');
        
        foreach($options as $id_proyecto => $w)
        {
            
            foreach($w as $v)
            {
                
                if($v['comprometido']){
                    if($v['fecha_contabilizado']){
                        $fila[$id_proyecto]['contabilizado']=$v['importe'];
                    }
                    else{
                        $fila[$id_proyecto]['contratado']=$v['importe'];
                    }
    
                }else{
                    $fila[$id_proyecto]['previsto']=$v['importe'];
                }
            }
            
        }
        
        return $fila;
        
     }
        




    function getImporteByStatus($id_proyecto)
    {
        
        $query="SELECT comprometido, sum(importe) as importe FROM gestion_proyectos_economico WHERE id_proyecto=$id_proyecto GROUP BY comprometido";
     
 
	    $select = $this->getAdapter()->select();
        $select->from( array( $this->_name ), array( 'comprometido', 'importe' =>'sum(importe)' ) );
		
        $select->where( 'id_proyecto = ?',$id_proyecto );
        $select->group( 'comprometido');

		$options = $this->getAdapter()->fetchPairs( $select );
        

        return $options;
	
     
    }
    
    
    function getConceptos($id_proyecto)
    {

	    $select = $this->getAdapter()->select();
        $select->from( array( $this->_name ), array('concepto') );
        $select->where( 'id_proyecto = ?',$id_proyecto );
        $select->group( 'concepto');
        
		$options = $this->getAdapter()->fetchCol( $select );
        return $options;
    } 
    
    
    function getImporteConcepto($id_proyecto,$concepto)
    {
        
        $rows=$this->getImportesProyecto($id_proyecto,$concepto); 
        

        foreach($rows as $k => $v)
        {
            $fila[$k]['id']=$v['id'];
            $fila[$k]['fecha']=$v['fecha'];
            $fila[$k]['anio']=$v['anio'];
            $fila[$k]['mes']=$v['mes'];
            
            
            if($v['comprometido']){
                if($v['fecha_contabilizado']){
                    $fila[$k]['fecha_contabilizado']=$v['fecha_contabilizado'];
                    $fila[$k]['status']="contabilizado";
                    $fila[$k]['importe_contabilizado']=(float)$v['importe'];
                }
                else{
                    $fila[$k]['status']="contratado";
                    $fila[$k]['importe_contratado']=(float)$v['importe'];
                }
            }else{
                $fila[$k]['status']="previsto";
                $fila[$k]['importe_previsto']=(float)$v['importe'];
            }
        }
        
        return $fila;
    }
    
    
    function getImportesProyecto($id_proyecto,$concepto=null)
    {

        if($this->_importes==null){
    	    $select = $this->getAdapter()->select();
            $select->from( array( $this->_name ), array('concepto','id','importe','fecha','fecha_contabilizado','comprometido',new Zend_Db_Expr('YEAR(fecha) as anio'),new Zend_Db_Expr('MONTH(fecha) as mes')));
            $select->where( 'id_proyecto = ?',$id_proyecto );
            //$select->where( 'concepto = ?',$concepto );
            $select->group(array('concepto','fecha'));
            $select->order( 'fecha ASC');
    		$options = $this->getAdapter()->fetchAll( $select );
            $this->_importes=Sgit_Util_Array::assocBy($options,'concepto');
        }
        
        if($concepto)return $this->_importes[$concepto];
        else  return $this->_importes;

    }
    
    
    
    function getdata($id_proyecto)
    {
        
         $conceptos = $this->getConceptos($id_proyecto);


         foreach($conceptos as $v){

            $rows= $this->getImporteConcepto($id_proyecto,$v);

            foreach($rows as $t){
       
                $fecha=new Zend_Date($t['fecha'],Zend_Date::ISO_8601);
                
                $key=$t['anio'].str_pad($t['mes'],2,'0',STR_PAD_LEFT);
                
                $fechas[$key]['fechas']=$fecha->toString('MMM-YYYY');

                $filas['conceptos'][$v][$key]['fecha']=$fecha->toString('MMM-YYYY');
      
                $filas['conceptos'][$v][$key]['id']=$t['id'];
                $filas['conceptos'][$v][$key]['status']=$t['status'];
                $filas['conceptos'][$v][$key]['fecha_contabilizado']=$t['fecha_contabilizado'];
                $filas['conceptos'][$v][$key]['importe_previsto']=$t['importe_previsto'];
                $filas['conceptos'][$v][$key]['importe_contratado']=$t['importe_contratado'];
                $filas['conceptos'][$v][$key]['importe_contabilizado']=$t['importe_contabilizado'];
                
                $concepto_previsto[$v]+=$t['importe_previsto'];
                $concepto_contratado[$v]+=$t['importe_contratado'];
                $concepto_contabilizado[$v]+=$t['importe_contabilizado'];
                $concepto_total[$v]+=$t['importe_previsto']+$t['importe_contratado']+$t['importe_contabilizado'];;
                
                $total_previsto+=$t['importe_previsto'];
                $total_contratado+=$t['importe_contratado'];
                $total_contabilizado+=$t['importe_contabilizado'];
                $total_total+=$t['importe_previsto']+$t['importe_contratado']+$t['importe_contabilizado'];;
              
                $fechas[$key]['importes']+=$concepto_total[$v];
            }
            
            $filas['conceptos'][$v]['importe_previsto']=$concepto_previsto[$v];
            $filas['conceptos'][$v]['importe_contratado']=$concepto_contratado[$v];
            $filas['conceptos'][$v]['importe_contabilizado']=$concepto_contabilizado[$v];
            $filas['conceptos'][$v]['importe_total']=$concepto_total[$v];

        }

        
        if(is_array($fechas))  ksort($fechas);
       
        $filas['importe_previsto']=$total_previsto;
        $filas['importe_contratado']=$total_contratado;
        $filas['importe_contabilizado']=$total_contabilizado;
        $filas['importe_total']=$total_total;

        $filas['fechas']=$fechas;
        

        
        
        return $filas;
        
        
    }

 
    
    

}
